<?php

if(!defined("VL_LEGAL")) die();

/**
 * Класс, представляющий собой событие.
 * @author vladimmi <vladimmi@ya.ru>
 */
class vlEvent
{
	/**
	 * Информация о событии
	 * @var mixed
	 */
	private $info;
	
	/**
	 * Привязанные плагины
	 * @var mixed 
	 */
	private $plugins;
	
	/**
	 * Конструктор
	 * @param string $name Имя события
	 * @return void
	 */
	function vlEvent($name)
	{
		$API=&vlAPI::getInstance();
		$result=$API->db[VL_DBROLE_MAIN]->query("SELECT * FROM ".VL_TABLE_EVENTS." WHERE evname='".$name."'");
		if($result) {
			$this->info=$API->db[VL_DBROLE_MAIN]->fetchAssoc($result);
			$result=$API->db[VL_DBROLE_MAIN]->query("SELECT * FROM ".VL_TABLE_PLUGINS." WHERE evname='".$name."' ORDER BY runorder ASC");
			while($h=$API->db[VL_DBROLE_MAIN]->fetchAssoc($result))
				$this->plugins[]=$h;
		}
	}
	
	/**
	 * Запуск связанных обработчиков с указанными параметрами
	 * @param mixed $properties Параметры для обработки события
	 * @return void
	 */
	function handle(&$properties)
	{
		foreach($this->plugins as $h) {
			$file=VL_DIR_PLUGINS.$this->info["name"]."/".$h["name"].".php";
			if(file_exists($file)) {
				include($file);
				$eh=new $h["class"];
				$eh->process($properties);
			}
		}
	}
}

?>